import type { Component } from './component';

/**
 * 页面类型枚举
 */
export enum PageType {
  NORMAL = 'normal',      // 普通页面
  DASHBOARD = 'dashboard', // 仪表板页面
  FORM = 'form',          // 表单页面
  LIST = 'list',          // 列表页面
  DETAIL = 'detail'       // 详情页面
}

/**
 * 页面布局类型
 */
export enum LayoutType {
  GRID = 'grid',     // 网格布局
  FREE = 'free',     // 自由布局
  FLOW = 'flow',     // 流式布局
  FLEX = 'flex'      // 弹性布局
}

/**
 * 页面导航配置
 */
export interface NavigationConfig {
  showInMenu: boolean;    // 是否在菜单中显示
  menuIcon?: string;      // 菜单图标
  menuTitle?: string;     // 菜单标题
  menuOrder?: number;     // 菜单排序
  breadcrumb?: string[];  // 面包屑导航路径
}

/**
 * 页面元数据
 */
export interface PageMetadata {
  title: string;          // 页面标题
  description?: string;   // 页面描述
  keywords?: string[];    // SEO 关键词
  author?: string;        // 作者信息
}

/**
 * 页面权限配置
 */
export interface PagePermission {
  roles?: string[];       // 允许访问的角色列表
  requireAuth: boolean;   // 是否需要身份验证
  customCheck?: string;   // 自定义权限检查函数
}

/**
 * 页面定义
 */
export interface Page {
  id: string;              // 唯一标识符
  name: string;            // 页面名称
  path: string;            // 路由路径
  type: PageType;          // 页面类型
  layoutType: LayoutType;  // 布局类型
  components: Component[]; // 页面组件列表
  state?: Record<string, unknown>; // 页面状态
  metadata?: PageMetadata; // 页面元数据
  navigation?: NavigationConfig; // 导航配置
  permissions?: PagePermission; // 权限配置
  styles?: Record<string, unknown>; // 页面样式
  script?: string;         // 页面脚本
} 